{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import xarray as xr\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.animation as animation\n",
    "import cartopy.feature as cfeat\n",
    "import cartopy.crs as ccrs\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           lat     lon  nv       time  time_bnds  lat_bnds  lon_bnds    precip\n",
      "5175384   1.25   31.25   0 1993-01-01 1993-01-01       0.0      30.0  1.921471\n",
      "5175385   1.25   31.25   0 1993-02-01 1993-02-01       0.0      30.0  2.759369\n",
      "5175386   1.25   31.25   0 1993-03-01 1993-03-01       0.0      30.0  3.329423\n",
      "5175387   1.25   31.25   0 1993-04-01 1993-04-01       0.0      30.0  5.320088\n",
      "5175388   1.25   31.25   0 1993-05-01 1993-05-01       0.0      30.0  6.852609\n",
      "...        ...     ...  ..        ...        ...       ...       ...       ...\n",
      "7649065  43.75  118.75   1 2002-08-01 2002-09-01      45.0     120.0  1.675602\n",
      "7649066  43.75  118.75   1 2002-09-01 2002-10-01      45.0     120.0  0.333059\n",
      "7649067  43.75  118.75   1 2002-10-01 2002-11-01      45.0     120.0  0.739434\n",
      "7649068  43.75  118.75   1 2002-11-01 2002-12-01      45.0     120.0  0.067391\n",
      "7649069  43.75  118.75   1 2002-12-01 2003-01-01      45.0     120.0  0.089280\n",
      "\n",
      "[155520 rows x 8 columns]\n"
     ]
    }
   ],
   "source": [
    "ds = xr.open_mfdataset(\"/home/satyam/Documents/Thesis_Work/Data1/precip.mon.mean.nc\")\n",
    "# It required as pandas dataframe\n",
    "df = ds.to_dataframe().reset_index()\n",
    "df = df[(df[\"time\"] >= pd.to_datetime(\"1993-01-01\")) & (df[\"time\"] < pd.to_datetime(\"2002-12-31\"))]\n",
    "precip = df[(df[\"lon\"] > 30) & (df[\"lon\"] < 120) & (df[\"lat\"] > 0) & (df[\"lat\"] < 45)]\n",
    "print(precip)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "x= precip.iloc[:,0:7]     # except precip columns , take other columns as independent variable\n",
    "y = precip[\"precip\"] #  considering precip column as dependent variable.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           lat     lon  nv       time  time_bnds  lat_bnds  lon_bnds\n",
      "5175384   1.25   31.25   0 1993-01-01 1993-01-01       0.0      30.0\n",
      "5175385   1.25   31.25   0 1993-02-01 1993-02-01       0.0      30.0\n",
      "5175386   1.25   31.25   0 1993-03-01 1993-03-01       0.0      30.0\n",
      "5175387   1.25   31.25   0 1993-04-01 1993-04-01       0.0      30.0\n",
      "5175388   1.25   31.25   0 1993-05-01 1993-05-01       0.0      30.0\n",
      "...        ...     ...  ..        ...        ...       ...       ...\n",
      "7649065  43.75  118.75   1 2002-08-01 2002-09-01      45.0     120.0\n",
      "7649066  43.75  118.75   1 2002-09-01 2002-10-01      45.0     120.0\n",
      "7649067  43.75  118.75   1 2002-10-01 2002-11-01      45.0     120.0\n",
      "7649068  43.75  118.75   1 2002-11-01 2002-12-01      45.0     120.0\n",
      "7649069  43.75  118.75   1 2002-12-01 2003-01-01      45.0     120.0\n",
      "\n",
      "[155520 rows x 7 columns]\n"
     ]
    }
   ],
   "source": [
    "print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5175384    1.921471\n",
      "5175385    2.759369\n",
      "5175386    3.329423\n",
      "5175387    5.320088\n",
      "5175388    6.852609\n",
      "             ...   \n",
      "7649065    1.675602\n",
      "7649066    0.333059\n",
      "7649067    0.739434\n",
      "7649068    0.067391\n",
      "7649069    0.089280\n",
      "Name: precip, Length: 155520, dtype: float32\n"
     ]
    }
   ],
   "source": [
    "print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# code to plot correlation\n",
    "\n",
    "#library to establish correlation\n",
    "import seaborn as sns\n",
    "names= []\n",
    "\n",
    "# creating a correlation matrix\n",
    "correlations = precip.corr()\n",
    "sns.heatmap(correlations,square=True,cmap= \"YlGnBu\")\n",
    "plt.yticks(rotation=0)\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()       # 1.0 value gives perfect positive correlation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lat</th>\n",
       "      <th>lon</th>\n",
       "      <th>nv</th>\n",
       "      <th>time</th>\n",
       "      <th>time_bnds</th>\n",
       "      <th>lat_bnds</th>\n",
       "      <th>lon_bnds</th>\n",
       "      <th>precip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5175384</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-01-01</td>\n",
       "      <td>1993-01-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>1.921471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175385</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-02-01</td>\n",
       "      <td>1993-02-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>2.759369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175386</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-03-01</td>\n",
       "      <td>1993-03-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>3.329423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175387</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-04-01</td>\n",
       "      <td>1993-04-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>5.320088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175388</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-05-01</td>\n",
       "      <td>1993-05-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>6.852609</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          lat    lon  nv       time  time_bnds  lat_bnds  lon_bnds    precip\n",
       "5175384  1.25  31.25   0 1993-01-01 1993-01-01       0.0      30.0  1.921471\n",
       "5175385  1.25  31.25   0 1993-02-01 1993-02-01       0.0      30.0  2.759369\n",
       "5175386  1.25  31.25   0 1993-03-01 1993-03-01       0.0      30.0  3.329423\n",
       "5175387  1.25  31.25   0 1993-04-01 1993-04-01       0.0      30.0  5.320088\n",
       "5175388  1.25  31.25   0 1993-05-01 1993-05-01       0.0      30.0  6.852609"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precip.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lat</th>\n",
       "      <th>lon</th>\n",
       "      <th>nv</th>\n",
       "      <th>time</th>\n",
       "      <th>time_bnds</th>\n",
       "      <th>lat_bnds</th>\n",
       "      <th>lon_bnds</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5175384</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-01-01</td>\n",
       "      <td>1993-01-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175385</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-02-01</td>\n",
       "      <td>1993-02-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175386</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-03-01</td>\n",
       "      <td>1993-03-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175387</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-04-01</td>\n",
       "      <td>1993-04-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5175388</th>\n",
       "      <td>1.25</td>\n",
       "      <td>31.25</td>\n",
       "      <td>0</td>\n",
       "      <td>1993-05-01</td>\n",
       "      <td>1993-05-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          lat    lon  nv       time  time_bnds  lat_bnds  lon_bnds\n",
       "5175384  1.25  31.25   0 1993-01-01 1993-01-01       0.0      30.0\n",
       "5175385  1.25  31.25   0 1993-02-01 1993-02-01       0.0      30.0\n",
       "5175386  1.25  31.25   0 1993-03-01 1993-03-01       0.0      30.0\n",
       "5175387  1.25  31.25   0 1993-04-01 1993-04-01       0.0      30.0\n",
       "5175388  1.25  31.25   0 1993-05-01 1993-05-01       0.0      30.0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The precipitation value indicated by the variable 'precip' is our target variable\n",
    "# and the remaining are the feature variables based on which we will predict the precipitation value.\n",
    "precip1 = precip.iloc[:,0:7] \n",
    "precip1.head()     # We can see that the target value 'precip' is missing from the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "lat          0\n",
       "lon          0\n",
       "nv           0\n",
       "time         0\n",
       "time_bnds    0\n",
       "lat_bnds     0\n",
       "lon_bnds     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Data Preprocessing\n",
    "#  We count the number of missing values for each feature using isnull()\n",
    "precip1.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zNu5VixpLPlz5ft8nMu7cxXifAAAFAJ3hwAAAKAkZA227e3tOnr0qGw7ug2obdvq6+tTe3v7GccdPnw48Xlvb68WLVqU5+UCAAAAqWUNts3Nzers7FR3d7ckqbu7W52dnae1IUjSBz/4Qd1///1yHEeDg4N6/PHHtX79+sKsGgAAAEhiuPE7HDLYu3evtmzZopMnT6q+vl7bt2/XihUrtHnzZt16661as2aNbNvWV77yFT3zzDOSpM2bN2vjxo0F/wEAAAAAKcdgCwAAAPgdN48BAACgJBBsAQAAUBIItgAAACgJBFsAAACUBIJtBvv27dPGjRu1fv16bdy4Ufv37/d6SSiQ7du3a926dVq9erVef/31xOO8B0rb8ePHtXnzZq1fv1433HCDPv/5z2twMLp9MNe+9H32s5/Vhz/8Yd14443atGmT9uzZI4lrXy7+8R//8bQ/87nuJcJFWp/4xCfcBx980HVd133wwQfdT3ziEx6vCIXy/PPPu4cPH3bf//73u6+99lricd4Dpe348ePub3/728TnX//6190vf/nLruty7cvByZMnEx///Oc/d2+88UbXdbn25eDll192b7nlFvfaa69N/JnPdS8NVGzTGBgYUE9Pj7q6uiRJXV1d6unpSVRzUFouv/zyM3bT4z1Q+hoaGnTllVcmPr/kkkt0+PBhrn2ZqKurS3w8MjIiwzC49mVgampKX/nKV7Rt2zYZhiGJP+9LScDrBfhVb2+v2traZFmWJMmyLLW2tqq3t/eMXddQmngPlBfHcfTDH/5Q69at49qXkb/+67/WM888I9d19c///M9c+zLwrW99Sx/+8Ie1dOnSxGNc99JBxRYAJN15552qrq7WzTff7PVSUERf/epX9dRTT+m2227T3/3d33m9HBTYiy++qJdeekmbNm3yeikoEIJtGu3t7Tp69Khs25Yk2batvr6+M/5zNUoX74HysX37dr399tv65je/KdM0ufZl6MYbb9Szzz6rRYsWce1L2PPPP6+33npL1113ndatW6cjR47olltu0YEDB7juJYJgm0Zzc7M6OzvV3d0tSeru7lZnZyf/SaKM8B4oD9/4xjf08ssv6+6771YoFJLEtS8Ho6Oj6u3tTXz+5JNPasGCBVz7EvfpT39aTz/9tJ588kk9+eSTWrRokb73ve/pQx/6ENe9RBiu67peL8Kv9u7dqy1btujkyZOqr6/X9u3btWLFCq+XhQK466679Nhjj+nYsWNqbGxUQ0ODfvKTn/AeKHFvvPGGurq6tHz5clVWVkqSlixZorvvvptrX+KOHTumz372sxofH5dpmlqwYIG+9KUv6YILLuDal5F169bpu9/9rs4991yue4kg2AIAAKAk0IoAAACAkkCwBQAAQEkg2AIAAKAkEGwBAABQEgi2AAAAKAkEWwCYp7Zu3aq7777b62UAgG8w7gsAAAAlgYotAHgoEol4vQQAKBkEWwAogHXr1umf/umf9KEPfUhr167Vl7/8ZU1OTurZZ5/V1VdfrXvuuUfvfe979eUvf1mO4+iee+7R9ddfryuvvFJf+MIXNDQ0lDjXrl279Md//Me6/PLLdc011+g///M/JUlbtmzRN77xDUlKnPe73/2urrzySq1bt04//vGPPfnZAcArBFsAKJCHH35Y3/ve9/Tzn/9c+/bt03e+8x1J0e1cT5w4oV/84he68847dd999+nxxx/Xjh07tHPnTi1YsEBf+cpXJEmHDx/W5s2bdfPNN+s3v/mNHnzwQXV2dqb8fseOHdPx48e1c+dOff3rX9fWrVv11ltvFe3nBQCvEWwBoEA+/vGPq729XQ0NDfrMZz6jn/zkJ5Ik0zR16623KhQKqbKyUj/60Y902223adGiRQqFQvr85z+vRx99VJFIRA8//LDe8573qKurS8FgUI2NjWmDrSR94QtfUCgU0hVXXKFrrrlGP/3pT4v14wKA5wJeLwAASlV7e3vi446ODvX19UmSGhsbVVFRkXju8OHD+tznPifTPFVrME1TAwMD6u3t1bJly3L6fvX19aqurk75PQGgHBBsAaBAent7Ex8fPnxYra2tkiTDME47btGiRfra176myy677IxztLe3a/fu3Tl9v5MnT2psbCwRbnt7e7Vq1arZLh8A5h1aEQCgQP7t3/5NR44c0dDQUOJGslT+5E/+RN/85jd16NAhSdLg4KAef/xxSdINN9ygX//613rkkUcUiUR0/Phx7dmzJ+33/Pa3v62pqSnt2rVLTz31lD74wQ/m/wcDAJ8i2AJAgXR1delTn/qUrr/+ei1dulSf+cxnUh73yU9+UuvWrdOnPvUpXXrppfrYxz6WqNJ2dHTo3nvv1Q9+8ANdccUVuvHGG/Xqq6+mPM/ChQtVX1+vq666Sn/5l3+p22+/XStXrizYzwcAfsMGDQBQAOvWrdNdd92l97znPUX5fs8++6y++MUv6le/+lVRvh8A+BEVWwAAAJQEgi0AAABKAq0IAAAAKAlUbAEAAFASCLYAAAAoCQRbAAAAlASCLQAAAEoCwRYAAAAlgWALAACAkvB/AZNRz4hGPATNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Exploratory Data Analysis\n",
    "# Exploratory Data Analysis is a very important step before training the model.\n",
    "# we will use some visualizations to understand the relationship of the target variable with other features.\n",
    "# plot the distribution of the target variable . We will use the distplot function from the seaborn library.\n",
    "\n",
    "sns.set(rc={'figure.figsize':(11.7,8.27)})\n",
    "sns.distplot(precip['precip'], bins=30)\n",
    "plt.show()\n",
    "# We see that the values of 'precip' are distributed with gamma distibution when alpha=3 and beta=0.5 with few outliers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f7fa8d04c70>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# we create a correlation matrix that measures the linear relationships between the variables.\n",
    "# The correlation matrix can be formed by using the corr function from the pandas dataframe library.\n",
    "# We will use the heatmap function from the seaborn library to plot the correlation matrix.\n",
    "correlation_matrix = precip.corr().round(2)\n",
    "# annot = True to print the values inside the square\n",
    "sns.heatmap(data=correlation_matrix, annot=True)\n",
    "\n",
    "# The correlation coefficient ranges from -1 to 1. If the value is close to 1, it means that there is a strong positive correlation between the two variables. \n",
    "# When it is close to -1, the variables have a strong negative correlation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABJIAAAFSCAYAAACpPfUMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3df5BdZX04/vduAhIgIeySkGxBKWmbpNCSSKwfZjLGxI7rYCC0YydOdGtVcMZARTqORASCgYysOgpTIQj+mDFVnKItP1btal3UioGhIygYAw4GQpsNIZsov6Kpu/f7B99dSXLvzbln7z333HNfr39gT/buee597rn3/bzP87yfjlKpVAoAAAAAOILOZjcAAAAAgNYgkQQAAABAIhJJAAAAACQikQQAAABAIhJJAAAAACQikQQAAABAIhJJQC6tWLEifvzjHze7GQAAbUHsBSQlkQS0tPnz58dTTz3V7GYAAAC0BYkkAAAAABKRSAJy7Wc/+1msXr06lixZEkuXLo0NGzbEgQMHIiLiHe94R0RErFq1KhYvXhzf+ta3mtlUAICWd+DAgdi4cWMsXbo0li5dGhs3bpyIvR544IF4wxveEF/84hfjnHPOiaVLl8Y3vvGNJrcYyJpEEpBrnZ2d8ZGPfCTuv//++NrXvhZbtmyJr371qxER8ZWvfCUiIu6666546KGH4txzz21mUwEAWt6mTZvipz/9adx1111x9913xyOPPBI333zzxL/v2bMnnn/++fjhD38YGzdujA0bNsRvfvObJrYYyJpEEpBrZ555ZixatCimTp0ap5xySqxevToefPDBZjcLAKCQ7rnnnrj44ouju7s7urq64uKLL46777574t+nTp0aF198cRx11FGxbNmyOPbYY2P79u1NbDGQtanNbgBANdu3b4/rr78+Hn300di/f3+Mjo7GGWec0exmAQAU0u7du6Onp2fi556enti9e/fEzzNnzoypU/8wjJw2bVq89NJLmbYRaC4zkoBcu+aaa+L000+PwcHB+MlPfhKXXXZZlEqlZjcLAKCQZs+eHTt37pz4eXh4OGbPnt3EFgF5I5EE5NqLL74Yxx13XBx33HHxxBNPxO23337Qv5900knx9NNPN6l1AADF8ta3vjU2bdoUe/fujb1798ZNN90U5513XrObBeSIRBKQ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KRERMWXKlJg9e3YMDw9HV1dXk1tHNfquNYyNjcXtt98eK1as0Gct4KMf/Wjcd999USqV4vOf/7w+y7Ebb7wxzj///Dj11FMnjukvyBfXaf49/fTTMXPmzPjsZz8bDzzwQBx33HFx6aWXxjHHHKOfcqKjoyNuuOGGWLt2bRx77LHx4osvxuc+9znXUk5V65dSqaTPcuaVY7WI+n9HFXZGEtBY1157bRx77LHxzne+s9lNIYGNGzfG97///bjsssviE5/4RLObQwUPPfRQPPLII7FmzZpmNwWowHXaGn7/+9/H008/HX/+538e//Zv/xYf+tCH4h//8R/jpZdeanbT+P/9/ve/j8997nNx8803x7333hubNm2Kyy67TB9BHTR6rFbYRNLcuXPjmWeeidHR0YiIGB0djd27dx82/Yv80Xf519/fH0899VTccMMN0dnZqc9ayAUXXBAPPPBAzJkzR5/l0IMPPhi/+tWv4k1velOsWLEidu3aFe9973tjx44d+gtywnXaGnp6emLq1KkTyzjOOuusOPHEE+OYY47RTznxi1/8Inbv3h1nn312REScffbZMW3atHjVq16lj3KoWrxvLJAvh47VIuo/xi5sIqm7uzsWLlwYAwMDERExMDAQCxcuNLWuBei7fPvMZz4Tjz76aNx0001x9NFHR4Q+y7MXX3wxhoeHJ34eGhqKE044QZ/l1Pve97740Y9+FENDQzE0NBRz5syJL3zhC3HuuefqL8gJ12lr6Orqite//vVx3333RcTLuxWNjIzEaaedpp9yYs6cObFr16741a9+FRERTzzxROzZsyde85rX6KMcqhY7iivzo9xYLaL+47WOUqlUqkuLc+iJJ56IdevWxXPPPRczZsyI/v7+OP3005vdLF7huuuui+985zuxZ8+eOPHEE2PmzJnxzW9+U9/l1C9/+ctYuXJlnHbaaXHMMcdERMQpp5wSN910kz7LqT179sTatWtj//790dnZGSeccEJcfvnlccYZZ+izFrBixYq45ZZb4s/+7M/0F+SU6zS/nn766bjiiivi17/+dUydOjU++MEPxrJly/RTjtx9991x2223TRRE/8AHPhB//dd/rY+aLM0YTZ9lq1wf3XDDDRXHahH17aNCJ5IAAAAAqJ/CLm0DAAAAoL4kkgAAAABIRCIJAAAAgEQkkgAAAABIRCIJAAAAgEQkkoBcWrFiRfz4xz9udjMAANqC2AtISiIJaGnz58+Pp556qtnNAAAAaAsSSQAAAAAkIpEE5NrPfvazWL16dSxZsiSWLl0aGzZsiAMHDkRExDve8Y6IiFi1alUsXrw4vvWtbzWzqQAALe/AgQOxcePGWLp0aSxdujQ2btw4EXs98MAD8YY3vCG++MUvxjnnnBNLly6Nb3zjG01uMZA1iSQg1zo7O+MjH/lI3H///fG1r30ttmzZEl/96lcjIuIrX/lKRETcdddd8dBDD8W5557bzKYCALS8TZs2xU9/+tO466674u67745HHnkkbr755ol/37NnTzz//PPxwx/+MDZu3BgbNmyI3/zmN01sMZA1iSQg184888xYtGhRTJ06NU455ZRYvXp1PPjgg81uFgBAId1zzz1x8cUXR3d3d3R1dcXFF18cd99998S/T506NS6++OI46qijYtmyZXHsscfG9u3bm9hiIGtTm90AgGq2b98e119/fTz66KOxf//+GB0djTPOOKPZzQIAKKTdu3dHT0/PxM89PT2xe/fuiZ9nzpwZU6f+YRg5bdq0eOmllzJtI9BcZiQBuXbNNdfE6aefHoODg/GTn/wkLrvssiiVSs1uFgBAIc2ePTt27tw58fPw8HDMnj27iS0C8kYiCci1F198MY477rg47rjj4oknnojbb7/9oH8/6aST4umnn25S6wAAiuWtb31rbNq0Kfbu3Rt79+6Nm266Kc4777xmNwvIEYkkINcuv/zyGBgYiNe+9rVx1VVXHVZQ+5JLLol169bFkiVL7NoGADBJa9eujTPPPDPOP//8OP/88+OMM86ItWvXNrtZQI50lKwRAQAAACABM5IAAAAASEQiCQAAAIBEJJIAAAAASEQiCQAAAIBEJJIAAAAASEQiCQAAAIBEJJIAAAAASEQiCQAAAIBEJJIAAAAASOT/A0dRKFLsXjq9AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# To fit a linear regression model, we select those features which have a high correlation with our target variable 'precip'.\n",
    "# By looking at the correlation matrix we can see that lon and lon_bnds have a high positive correlation with preip (0.35) where as lat and lat_bnds have a high negative correlation with precip(-0.34).\n",
    "\n",
    "# Based on the above observations we will take lat and lon as our features. \n",
    "# Using a scatter plot let’s see how these features vary with precip.\n",
    "\n",
    "\n",
    "plt.figure(figsize=(20, 5))\n",
    "\n",
    "features = ['lat', 'lon']\n",
    "target = precip['precip']\n",
    "\n",
    "for i, col in enumerate(features):\n",
    "    plt.subplot(1, len(features) , i+1)\n",
    "    x = precip1[col]\n",
    "    y = target\n",
    "    plt.scatter(x, y, marker='o')\n",
    "    plt.title(col)\n",
    "    plt.xlabel(col)\n",
    "    plt.ylabel('precip')\n",
    "    \n",
    "# The precip first increase then approx. decreases as the value of lat increases. \n",
    "# Though it doesn't look to be following exactly linear line. \n",
    "# There are few outliers and the data seems to be capped at 40.\n",
    "# The precip look like to increase with increase in lon but with the some variations. \n",
    "# Though it doesn’t look to be following exactly a linear line. \n",
    "# BUt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABJIAAAFSCAYAAACpPfUMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdf3RU1b3//9f8IOFnBGJC4GqvNVZIuSoULIslbSzaIorCzbq9tFQu1/qjq9TWuj62pVpFUG+l7eeqqxWprfKxtuKqLQs1lVIVjZVGr/0WrprwQyOilIQfARpATEgy3z/SSSfhnGHO5syeM2eej380m5zZZ2ZnZt7nffZ+70gikUgIAAAAAAAAOIFork8AAAAAAAAA+YFEEgAAAAAAADJCIgkAAAAAAAAZIZEEAAAAAACAjJBIAgAAAAAAQEZIJAEAAAAAACAjJJIAAAAAAACQERJJAHw1ffp0/elPf/Lt8V599VV9+tOf9u3x5s+fryeeeMK3xwMAAMglv2OvVIsWLdI999zjy2Pt3LlTY8eOVWdnpy+PByB3SCQByImxY8dqx44duT4NAAAAAIAHJJIAAAAAAACQERJJALLi9ddf19y5czV58mRNmzZNS5cuVUdHhyTpS1/6kiRp9uzZmjhxop555pkTPt6KFSs0ZcoUTZ8+XU899VRv+6JFi7RkyRJdd911mjhxoj7/+c/rvffe6/33DRs26JJLLtGkSZO0dOlSJRKJ3n/bsWOHrrzySk2aNElTpkzRN7/5Tb+ePgAAgFUdHR266667NG3aNE2bNk133XVXb+yVLBXw8MMPa+rUqZo2bZp++9vfZvS4Bw4c0FVXXaWJEyfqyiuv1F//+tfefxs7dqxWrVqlz33uczr//PO1ZMmS3lirq6tLy5Yt05QpU3TRRReprq6uz+OuXr1aF110kSZOnHhcfAcg2EgkAciKaDSq7373u3rllVf0+OOPq76+Xo899pgk6Ve/+pUk6cknn9TGjRt16aWXpn2sffv26cCBA/rjH/+ou+++W7fddpveeeed3n//3e9+p+uvv16vvfaaPvKRj/Su5d+/f7++/vWv65vf/KZeeeUVfeQjH9Ff/vKX3uPuu+8+XXDBBXrttdf00ksv6corr/T7ZQAAALDigQce0P/+7//qySef1FNPPaU33nhDy5cv7/33ffv26dChQ3rppZd01113aenSpfrb3/52wsd9+umntXDhQr366qsaN26cbrrppj7//uKLL+o3v/mNnnzySa1du1Z//OMfJUm//vWv9cILL2jNmjX67W9/q9///ve9x3zwwQe688479bOf/UwbN27U448/rqqqKp9eCQDZRiIJQFb8y7/8iyZMmKB4PK7TTjtNc+fO1WuvvWb8eDfccIOKior0yU9+UtXV1Vq7dm3vv332s5/Vueeeq3g8riuuuEKbN2+WJL300ks666yzdMkll2jAgAFasGCBTj311N7j4vG4du3apT179qi4uFiTJ082f8IAAAA59PTTT+trX/uaSktLNXLkSH3ta1/rM8snHo/ra1/7mgYMGKDq6moNHjxY27dvP+HjXnjhhTr//PNVVFSkG2+8UZs2bVJzc3Pvv1977bUqKSnRmDFjNGXKFG3ZskWStHbtWi1YsECjR4/W8OHD9ZWvfKXP40ajUb311lv68MMPVV5ero997GM+vRIAso1EEoCs2L59u77yla/oggsu0Cc+8Qndc889OnDggNFjlZSUaPDgwb0/jxkzRnv27On9OTU5NHDgQH3wwQeSpD179qiioqL33yKRiEaPHt3787e+9S0lEgn927/9my677DL95je/MTo/AACAXNuzZ4/GjBnT+3P/eGn48OGKx+O9Pw8aNKg3ZkonNZYaMmSITjnllD6PW1ZW1ucxjxw50ns+qXFX6rkNHjxY99xzjx5//HFNmzZN1113nZqamjJ9qgByjEQSgKy4/fbbdeaZZ2rdunX6y1/+ohtvvLFPfSIv2tra+gQ6zc3NKi8vP+FxZWVlamlp6f05kUj0uYNWVlamO++8Uy+//LKWLFmiJUuWsJMcAADIS+Xl5dq1a1fvz5nGSyeSGksdOXJEf/vb3zKOw1LjrtT/l6RPfepTWrlypV5++WWdeeaZuvXWW0/6XAHYQSIJQFYcOXJEQ4YM0ZAhQ9TU1KRVq1b1+fdTTz1V77//fsaP9+Mf/1gdHR3685//rBdffFGXXHLJCY+prq7WW2+9pT/84Q/q7OzUL37xC+3bt6/339euXdsbHJ1yyimKRCKKRvlYBAAA+eeyyy7TAw88oP3792v//v26//77dfnll5/049bV1enPf/6zOjo6dN999+m8887rM9PIzcyZM/Xoo4+qpaVFf/vb3/Tg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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Check similar works with lat_bnds and lon_bnds\n",
    "plt.figure(figsize=(20, 5))\n",
    "\n",
    "features = ['lat_bnds', 'lon_bnds']\n",
    "target = precip['precip']\n",
    "\n",
    "for i, col in enumerate(features):\n",
    "    plt.subplot(1, len(features) , i+1)\n",
    "    x = precip1[col]\n",
    "    y = target\n",
    "    plt.scatter(x, y, marker='o')\n",
    "    plt.title(col)\n",
    "    plt.xlabel(col)\n",
    "    plt.ylabel('precip')\n",
    "    \n",
    "# Getting approx. same type of scatter plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Preparing the data for training the model\n",
    "# We concatenate the lat and lon columns using np.c_ provided by the numpy library.\n",
    "import numpy as np\n",
    "X = pd.DataFrame(np.c_[precip1['lat'], precip1['lon']], columns = ['lat','lon'])\n",
    "Y = precip['precip']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(124416, 2)\n",
      "(31104, 2)\n",
      "(124416,)\n",
      "(31104,)\n"
     ]
    }
   ],
   "source": [
    "# Splitting the data into training and testing sets\n",
    "# We train the model with 80% of the samples and test with the remaining 20%.\n",
    "# To split the data we use train_test_split function provided by scikit-learn library.\n",
    "# We finally print the sizes of our training and test set to verify if the splitting has occurred properly.\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5)\n",
    "print(X_train.shape)\n",
    "print(X_test.shape)\n",
    "print(Y_train.shape)\n",
    "print(Y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We use scikit-learn’s LinearRegression to train our model on both the training and test sets.\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "lin_model = LinearRegression()\n",
    "lin_model.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The model performance for training set\n",
      "--------------------------------------\n",
      "RMSE is 2.9883477066100737\n",
      "R2 score is 0.23955239193428912\n",
      "\n",
      "\n",
      "The model performance for testing set\n",
      "--------------------------------------\n",
      "RMSE is 3.029020522858691\n",
      "R2 score is 0.23136884695257975\n"
     ]
    }
   ],
   "source": [
    "# model evaluation for training set\n",
    "y_train_predict = lin_model.predict(X_train)\n",
    "rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))\n",
    "\n",
    "from sklearn.metrics import r2_score\n",
    "r2 = r2_score(Y_train, y_train_predict)\n",
    "\n",
    "print(\"The model performance for training set\")\n",
    "print(\"--------------------------------------\")\n",
    "print('RMSE is {}'.format(rmse))\n",
    "print('R2 score is {}'.format(r2))\n",
    "print(\"\\n\")\n",
    "\n",
    "#=========================================================================================\n",
    "# model evaluation for testing set\n",
    "y_test_predict = lin_model.predict(X_test)\n",
    "rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))\n",
    "r2 = r2_score(Y_test, y_test_predict)\n",
    "\n",
    "print(\"The model performance for testing set\")\n",
    "print(\"--------------------------------------\")\n",
    "print('RMSE is {}'.format(rmse))\n",
    "print('R2 score is {}'.format(r2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#========================================================================================================\n",
    "# R2 score means the proportion of the variance in the dependent variable that is predictable from the independent variable(s).\n",
    "# according to Cohen (1992)  r-square value .12 or below indicate low, between .13 to .25 values indicate medium, .26 or above and above values indicate high effect size. \n",
    "# So, here it is medium.\n",
    "# RMSE of test > RMSE of train => OVER FITTING of the data.\n",
    "# There is no fixed threshold limit for RMSE and R squared. It is always better to have RMSE as low as possible.\n",
    "# RMSE close to zero and R-Square approaching 1 are indicative of high accuracy between observed and predicted values"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
